import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;

public class TestContato {
	
	private Contato contato;
	private Contato contato1;
	private Contato contato2;
	
	@Before public void criaContato() throws Exception{
		contato1 = new Contato("Joao","Rodrigues Alves - 51","10/10/2010","email");
		contato2 = new Contato("Pedro","FlorianoPeixoto - 35","15/10/1990","facebook");
	}
	
	@Test 
	public void testaContatos(){
		Assert.assertEquals("Nome Errado", "Joao", contato1.getNome());
		Assert.assertEquals("Endereco Errado","Rodrigues Alves - 51", contato1.getEndereco());
		Assert.assertEquals("Aniversario Errado","10/10/2010", contato1.getDataAniversario());
		Assert.assertEquals("Foram de contato Errada","email", contato1.getFormaDeContato());
	}
	
	@Test 
	public void testeErrosNoConstrutor(){
		
		//Nome nulo ou vazio
		try{
			contato = new Contato(null,"Rodrigues Alves - 51","10/10/2010","email");
		}
		catch(Exception e){
			Assert.assertEquals("Nome nao pode ser vazio ou nulo.","Nome nao pode ser vazio ou nulo.",e.getMessage());
		}

		//Endereco nulo ou vazio
		try{
			contato = new Contato("Joao",null,"10/10/2010","email");
		}
		catch(Exception e){
			Assert.assertEquals("Endereco nao pode ser vazio ou nulo.","Endereco nao pode ser vazio ou nulo.",e.getMessage());
		}
	
		//Data de Aniversario nula ou vazia
		try{
			contato = new Contato("Joao","Rodrigues Alves - 51",null,"email");
		}
		catch(Exception e){
			Assert.assertEquals("Data de aniversario nao pode ser vazia ou nula.","Data de aniversario nao pode ser vazia ou nula.",e.getMessage());
		}

		//Forma de Contato nulo ou vazio
		try{
			contato = new Contato("Joao","Rodrigues Alves - 51","10/10/2010",null);
		}
		catch(Exception e){
			Assert.assertEquals("Forma de contato nao pode ser vazia ou nula.","Forma de contato nao pode ser vazia ou nula.",e.getMessage());
		}
	}

	@Test 
	public void testEquals() throws Exception{
		Assert.assertTrue(!contato1.equals(null));
		Assert.assertEquals(contato1,contato1);
		Assert.assertEquals(new Contato("Joao","Rodrigues Alves - 51","10/10/2010","email"),contato1);
		Assert.assertTrue(!contato1.equals(contato2));

	}
	
	@Test
	public void testeToString(){
		Assert.assertTrue(contato1.toString().equals(contato1.getNome()+"-"+contato1.getEndereco()+"-"+contato1.getDataAniversario()+"-"+contato1.getFormaDeContato()));
	}
}
